package cn.llming.gift.exception;

import cn.hutool.core.util.StrUtil;

import java.util.Collection;

public class LlmingAssert {
    /**
     * 断言为blank字符
     * @param str
     * @param message
     */
    public static void isBlank(String str,String message){
        if (!StrUtil.isBlankIfStr(str))
            throw new LlmingException(message);
    }
    /**
     * 断言不为blank字符
     * @param str
     * @param message
     */
    public static void isNotBlank(String str,String message){
        if (StrUtil.isBlankIfStr(str))
            throw new LlmingException(message);
    }


    /**
     * 断言null对象
     */
    public static void isNull(Object obj,String message){
        if (obj!=null)
            throw new LlmingException(message);
    }
    /**
     * 断言不是null对象
     */
    public static void isNotNull(Object obj,String message){
        if (obj==null)
            throw new LlmingException(message);
    }

    /**
     * 断言是null集合
     * ====
     * 出奇制胜
     */
    public static void isColNull(Collection objs, String message){  //null [] [1]
        if (!(objs==null || objs.size()<1))
            throw new LlmingException(message);
    }



    /**
     * 断言不是null集合
     * ====
     * 出奇制胜
     */
    public static void isNotColNull(Collection objs, String message){  //null [] [1]
        if (objs==null || objs.size()<1)
            throw new LlmingException(message);
    }

    /**
     * 断言为true
     * @param exp
     * @param message
     */
    public static void isTrue(boolean exp, String message){  //null [] [1]
        if (!exp)
            throw new LlmingException(message);
    }

    /**
     * 断言为false
     * @param exp
     * @param message
     */
    public static void isFalse(boolean exp, String message){  //null [] [1]
        if (exp)
            throw new LlmingException(message);
    }

    /**
     * 断言字符串相等
     * @param str1
     * @param str2
     * @param message
     */
    public static void isEqual(String str1,String str2 , String message){  //null [] [1]
        if (!str1.equals(str2))
            throw new LlmingException(message);
    }


    //===========================================================//
    /**
     * 断言为blank字符
     * @param str
     * @param errorCode
     */
    public static void isBlank(String str,ErrorCode errorCode){
        if (!StrUtil.isBlankIfStr(str))
            throw new LlmingException(errorCode.getMessage(),errorCode.getCode());
    }
    /**
     * 断言不为blank字符
     * @param str
     * @param errorCode
     */
    public static void isNotBlank(String str,ErrorCode errorCode){
        if (StrUtil.isBlankIfStr(str))
            throw new LlmingException(errorCode.getMessage(),errorCode.getCode());
    }


    /**
     * 断言null对象
     */
    public static void isNull(Object obj, ErrorCode errorCode){
        if (obj!=null)
            throw new LlmingException(errorCode.getMessage(),errorCode.getCode());
    }
    /**
     * 断言不是null对象
     */
    public static void isNotNull(Object obj, ErrorCode errorCode){
        if (obj==null)
            throw new LlmingException(errorCode.getMessage(),errorCode.getCode());
    }

    /**
     * 断言是null集合
     * ====
     * 出奇制胜
     */
    public static void isColNull(Collection objs, ErrorCode errorCode){  //null [] [1]
        if (!(objs==null || objs.size()<1))
            throw new LlmingException(errorCode.getMessage(),errorCode.getCode());
    }



    /**
     * 断言不是null集合
     * ====
     * 出奇制胜
     */
    public static void isNotColNull(Collection objs, ErrorCode errorCode){  //null [] [1]
        if (objs==null || objs.size()<1)
            throw new LlmingException(errorCode.getMessage(),errorCode.getCode());
    }

    /**
     * 断言为true
     * @param exp
     * @param errorCode
     */
    public static void isTrue(boolean exp, ErrorCode errorCode){  //null [] [1]
        if (!exp)
            throw new LlmingException(errorCode.getMessage(),errorCode.getCode());
    }

    /**
     * 断言为false
     * @param exp
     * @param errorCode
     */
    public static void isFalse(boolean exp, ErrorCode errorCode){  //null [] [1]
        if (exp)
            throw new LlmingException(errorCode.getMessage(),errorCode.getCode());
    }

    /**
     * 断言字符串相等
     * @param str1
     * @param str2
     * @param errorCode
     */
    public static void isEqual(String str1,String str2 , ErrorCode errorCode){  //null [] [1]
        if (!str1.equals(str2))
            throw new LlmingException(errorCode.getMessage(),errorCode.getCode());
    }




}
